/*
 * @Author: chen haoxuan
 * @Date: 2021-05-11 20:24:42
 * @LastEditTime: 2021-05-11 20:47:32
 */
//3.9.2 静态成员函数
//静态成员函数是类的一部分而不是对象的一部分。如果要在类外调用公用静态成员函数，要用类名 运算符 ::
//(1) 静态成员函数没有this指针
//(2) 可以说静态成员函数与非静态成员函数的根本区别是：
//          非静态成员函数有this指针，而静态成员函数没有this指针。由此决定了静态成员函数不能访问本类中的非静态成员。静态成员函数可以之间引用本类中的静态成员
//(3) 静态成员函数主要用来访问静态数据成员，而不访问非静态成员
#include<iostream>
using namespace std;
class Student
{
    public:
        Student(int n,int a,float s):num(n),age(a),score(s){}
        void total();
        static float average();
    private:
        int num;
        int age;
        float score;
        static float sum;
        static int count;
};
void Student::total()
{
    sum+=score;
    count++;
}
float Student::average()
{
    return (sum/count);
}
float Student::sum=0;
int Student::count=0;
int main()
{
    Student stud[3]={
        Student(1001,18,70),
        Student(1002,19,78),
        Student(1003,20,98)
    };
    int n;
    cout<<"Please input the number of students: ";
    cin>>n;
    for (int i = 0; i < n; i++)
    {
        stud[i].total();
    }
    cout<<"the average score of "<<n<<"student is "<<Student::average()<<endl;
    system("pause");
    return 0;
}